This specification relates to optimizing caches for streaming media streams within a content delivery network based on hypertext transfer protocol (HTTP.)
HTTP has become a standard protocol for Web communications. Consequently, technologies for optimizing HTTP delivery of content have been developed and have become available. Such optimized delivery has become widely accessible as it relies mostly on standard HTTP servers that are widely supported in content delivery networks.
The basic principles of HTTP streaming involve using software on an origin server of a content delivery network to break a media stream into small fragments (also referred to as segments) saved as separate files, and to create a play list for informing a media player client where to get the files that make up a complete media stream. The media player client can download the files and can play the small fragments included in the downloaded files in an order specified by the playlist. When too many media player clients send download requests to the origin server at the same time, the existing bandwidth and system resources of the origin server can be overwhelmed.
Edge servers of a content delivery network that are connected to the origin server can mitigate this problem by aggregating download requests, e.g., each of the edge servers can multiplex connections from a large number of media player clients on to one connection to the origin server. Moreover, each of the edge servers can receive corresponding requested files from the origin server, and then can relay them to associated media player clients in response to their respective download requests. Additionally, each edge server can be configured to cache the files received from the origin server by aggregating the files to be cached into local copies of media streams (e.g., complete copies of movies can be temporarily stored by an edge server) such that cached media streams can be made available to other media player clients that connect to the edge server.